/**
 * 
 */
package com.gopay.common.user.manager;

import com.gopay.common.domain.user.UserPayPwdQuesResult;
import com.gopay.common.domain.user.UserPayPwdResult;

/**
 * @UserPayPwdManager.java
 * @author HJY
 * @2013-5-22 上午09:38:16  www.gopay.com.cn Inc.All rights reserved.
 */
public interface UserPayPwdManager {

    /**
     *  <pre>
     *  校验支付密码
     *  1.当日失败三次锁定
     *  2.输入一次正确后，当日累计错误次数清0
     *  </pre>
     * @param userId 用户ID（UserInfo表主键）
     * @param payPwd 支付密码 明文
     * @return
     */
    public UserPayPwdResult verifyPayPwd(String userId,String payPwd);
    
    /**
     *  <pre>
     *   校验安全问题
     *   1.个人用户当日失败5次锁定
     *   2.企业用户当日失败10次锁定
     *   3.输入一次正确后，当日累计错误次数清0
     *   </pre>
     * @param userId 用户ID（UserInfo表主键）
     * @param answer 安全问题答案 明文
     * @return
     */
    public UserPayPwdQuesResult verifySafeQues(String userId,String answer);
    
    /**
     * 更改支付密码 
     * @param userId 用户ID（UserInfo表主键）
     * @param newPayPwd 新支付密码 明文
     * @return
     */
    public boolean updatePayPwd(String userId,String newPayPwd);
    
    /**
     * 修改安全支付问题
     * @param userId 用户ID（UserInfo表主键）
     * @param ques 安全问题 明文
     * @param answer 安全问题答案 明文
     * @return
     */
    public boolean updateSafeQues(String userId,String ques,String answer);

    /**
     * 根据达日密码错误次数，返回错误消息（此方法多处使用，所以重构为一处，方便修改）
     * @param errNum
     * @return
     */
    public String getPayPwdStatusMsg(int errNum);
    
}
